package com.zzl.alligator.management.monitor.domain.sysinfo;

import cn.hutool.core.util.NumberUtil;
import com.zzl.alligator.common.util.DateUtils;

import java.util.Date;

/**
 * jvm信息
 *
 * @author zhouziliang
 * @since 2020/7/9
 */
public class JvmRunInfo {

    private static final int M = 1024 * 1024;
    /**
     * 当前JVM占用的内存总数(M)
     */
    private double total;

    /**
     * JVM最大可用内存总数(M)
     */
    private double max;

    /**
     * JVM空闲内存(M)
     */
    private double free;

    /**
     * JDK版本
     */
    private String version;

    /**
     * JDK路径
     */
    private String home;

    /**
     * JDK启动时间
     */
    public String getStartTime() {
        return DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, DateUtils.getServerStartDate());
    }

    /**
     * JDK运行时间
     */
    public String getRunTime() {
        return DateUtils.getDatePoor(new Date(), DateUtils.getServerStartDate());
    }


    /**
     * 已用内存
     *
     * @return 易用内存
     */
    public double getUsed()
    {
        return NumberUtil.div(total - free, M, 2);
    }

    /**
     * 使用率
     *
     * @return 使用率
     */
    public double getUsage()
    {
        return NumberUtil.mul(NumberUtil.div(total - free, total, 4), 100);
    }

    public double getTotal() {
        return NumberUtil.div(total, M, 2);
    }

    public void setTotal(double total) {
        this.total = total;
    }

    public double getMax() {
        return NumberUtil.div(max, M, 2);
    }

    public void setMax(double max) {
        this.max = max;
    }

    public double getFree() {
        return NumberUtil.div(free, M, 2);
    }

    public void setFree(double free) {
        this.free = free;
    }

    public String getVersion() {
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    public String getHome() {
        return home;
    }

    public void setHome(String home) {
        this.home = home;
    }
}
